package de.bmuskalla.brainfuck.ui.editor.editors;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IDocumentPartitioner;
import org.eclipse.jface.text.rules.FastPartitioner;
import org.eclipse.ui.editors.text.FileDocumentProvider;

public class BFDocumentProvider extends FileDocumentProvider {

	protected IDocument createDocument(Object element) throws CoreException {
		IDocument document = super.createDocument(element);
		if (document != null) {
			IDocumentPartitioner partitioner = new FastPartitioner(
					new BFPartitionScanner(), new String[] {
							BFPartitionScanner.BF_INCREMENT_POINTER,
							BFPartitionScanner.BF_DECREMENT_POINTER,
							BFPartitionScanner.BF_INCREMENT,
							BFPartitionScanner.BF_DECREMENT,
							BFPartitionScanner.BF_JUMP_BACKWARD,
							BFPartitionScanner.BF_JUMP_FORWARD,
							BFPartitionScanner.BF_INPUT,
							BFPartitionScanner.BF_OUTPUT,
							BFPartitionScanner.BF_COMMENT, });
			partitioner.connect(document);
			document.setDocumentPartitioner(partitioner);
		}
		return document;
	}
}